﻿using appladen.contracts;
using System.Diagnostics;
using appladen.gui;
using appladen.app.NinjectModules;
using Ninject;

namespace appladen.app
{
    public class Factory : IFactory
    {
        public IDetailviewBoard Create()
        {
            Trace.TraceInformation("Factory");
            var kernel = new ebc.ninject.Kernel(new FactoryModule());
            
            //Board hat Abhängigkeit zu ViewModel, aber nicht zur View.
            var board = kernel.Get<IDetailviewBoard>();
            //View hat auch eine Abhänigkeit zum ViewModel, aber nicht zum Board
            kernel.Get<DetailView>();
            //Durch das Setzen des SingletonScope für das ViewModel wird sichergestellt, 
            //das die gleiche Instanz des ViewModels in View und Board verwendet wird. 
            
            return board;
        }
    }
}
